Improving Cross-Modal Retrieval with Set of Diverse Embeddings
#paper
https://scrapbox.io/files/64f6f7c1e2b4ca001b13b884.png
クロスモーダル検索タスクにおいては、単一の画像が複数の、同じ意味のキャプションにマッチする場合が多く存在する。
上の例だと、どれも画像をよく表しているキャプションである
スケートパークで、ヘルメットをつけた男の子たちが自転車をスロープを使って運んでいる
小さい子どもたちがスケートパークで自転車の横に立っている。
子供の集団がバイクやスケートボードに乗っている
それぞれ、注目している領域や対象は微妙に異なるかもしれないし、等しいものもある。
https://scrapbox.io/files/64f6f90ee2b4ca001b13c97e.png
全体のモジュール構成。
Visual feature extrtactor
入力から、local featureとGlobal featureを取得する
Global featureはPoolingによって取得
textual feature extractor
local featureとGlobal featureを計算
set-prediction modules $ f^\mathcal{V},f^\mathcal{T}
埋め込み空間の距離において、smooth-Chamfer similarityを計算する
https://scrapbox.io/files/64f6f9e877ae61001c3c6464.png
重みを共有する複数のAggregation blockにおいてset predictionをおこなう
さらに、$ f^\mathcal{V}と$ f^\mathcal{T}は同じモデル構造であることに注意する。
Q. element slotは何?
A. 各iterationで生成されたattention mapである。
名前の通り、Slot-Attentionから着想を得ている。
https://scrapbox.io/files/64f6fb86264fad001c0657f5.png
埋め込み空間における他の類似度関数との比較である。図を見た感じだと、黒く結んだ部分を短くするように学習している?
各最適化関数の最適化前後の画像を示している。
2つの集合はマッチング対であり、類似度を最大化するように最適化される。
たぶん、青い集合と黄色い集合の類似度を最大化させるようなマッチングの最適化手法
https://scrapbox.io/files/64f6fd80edbdd6001ba4805a.png
各要素はimage embedding setに対し、埋め込み空間において、最も近い関係にあるattention_mapとキャプションの可視化。
マッチングしたキャプションは緑、attention mapに対応するentitiesには下線が引いてある。
クロスモーダル検索のナイーブな解法としては、ユニモーダルな検索フレームワークを拡張し、異なるモダリティの埋め込み空間の組み合わせ(joint embedding space)をcontrastive lossやtriplet lossを用いて学習させる方法である。
各サンプルは、単一の埋め込みベクトルで表現され、joint embedding spaceの近傍探索を減らす?
image-textの場合だと、図1のような曖昧さを含むため難しい
Localな特徴(まるで囲った領域)は、異なるキャプションにもマッチする。同様に、画像->textにも多対1の対応がある。
クロスモーダル検索において、その意味の多様性が反映されるべきである。
あるサンプルに対し、単一の埋め込みベクトルでしか表現しないから、unimodal retrievalではこの必要性を満たさない。
cross-modal retrievalでは、image-caption対の類似度を直接予測するcross-attention networkを用いたものを採用している。
この場合では、両方のモダリティに対し、一度に注意を向けることができ、モダリティ間の関係を明示的に推論できる。
類似度計算そのものに莫大な計算資源、Queryが到着するたびに、すべての画像に対し類似度を計算して、、、となる
textual & visual encoderを用いる手法では、予め計算された埋め込みベクトル空間において近傍探索を行う。(近年主流)
与えられた入力に対し単一のembeddingしか出さないから、多対多の問題設定には合わない
2つのモダリティに対しseparate encodersを用いてこの問題に挑んでいる。より詳細には、各サンプルに対し、a set of heterogeneous embedding vectorsを画像・言語特徴のtopにあるself-attention layerによって計算する
なお、これをembedding setと呼ぶことにする。embedding setの要素は入力の多様な意味をencodeしているはずであるから、曖昧さの問題はaddressedである
heterogeneous : 異質な
embedding set-baseのモデルでは、retrieval systemは効果的かつ強力だが、類似度関数は曖昧さの問題を考慮していない。
2つの問題点があると指摘
Sparse supervision
embedding setがほとんど訓練されない
Set collapsing
十分な曖昧さを埋め込んでおらず、分散が小さい埋め込み集合
曖昧なベクトルであるならば、分散が大きく埋め込まれるはずであると主張
既存研究の集合予測に使用されているself-attention modulesでは、明示的に集合要素間の乖離を考慮していない。
-> Set collapsingが起こる可能性
新規性
集合に対する新たな類似度関数smooth-Chamfer similarityを提案
上記2つの問題を解決するとしている。
slot attentionに基づく集合予測モジュール
学習可能なembeddingであるelement slotsごとに、入力データを集約するよう競いながら学習する
Cross-attention networkを使用するか、2つの分割したencoderを使用するか
Slot Attention
aggregation block = element slotが入力データを集約しようとcompeteするモジュール?
https://scrapbox.io/files/6509528f8ec9a2001b7d3698.png
set = 埋め込みベクトルの集合を生成
集合の濃度 = the total number of unique elements in a set、つまり、Slot attentionのK個の出力は、それぞれ正規化されているもと、異なる埋め込み表現であることを暗示(VAEの潜在変数が元の画像の次元より小さくなることと対応?)
aggregation block では、k, vをlocal feature、slotをqueryとして、attention map * valueとして与えられるよね、
Transformerのnormalizationはkey単位に働くが、slotに対してnormalizationされるということに注目する必要がある。これによって、slot間がcompeteする。
https://scrapbox.io/files/65095715d03f0b001b3d8c0c.png
https://scrapbox.io/files/6509573bb72b48001b4eeebf.png
T回目の反復= aggregation blockの個数という認識かな、つまりiteration = aggregation blockを徹
Sはset prediction moduleによって作成
smooth-Chamfer similarity
おそらく、triplet lossとかで訓練している。(実際これをベースにしていた)
contrastive lossとかと併せて、ranking lossと呼ばれる
関数cはcosine類似度を表す。
PVSE(Multiple instance learning framework)
$ s_{\text{MIL}}(\bm{S}_1,\bm{S}_2)=\max_{x\in\bm{S}_1,y\in\bm{S}_2}c(x,y)
つまり、集合間の類似度 = 最も近い要素のみしか考慮に入れていない。類似度計算が単純な一方で、sparse supervision問題に対して脆弱である。
言い換えれば、要素の多数がclosest pairに選ばれなければ、untrainedなままになってしまう
PCME
確率(MP、match probability)を類似度関数として用いている。
$ s_{\text{MP}}(\bm{S}_1,\bm{S}_2)=\sum_{x\in\bm{S}_1,y\in\bm{S}_2}\sigma(\alpha c(x,y)+\beta)
σ:シグモイド関数で、\alpha、\betaは学習可能なパラメータである。
MPはすべての要素の組の平均を取っている。sparse supervision問題には解決するが、set collapsing problemを引き起こす。
定性的な問題点がほしいなあ
MPを直接最適化すると、embedding setの各要素は相対的な近さを考慮することなく、互いに引っ張りあるから、embedding set がつぶれてしまう。Match probabilityによるアプローチには、さらなる特殊なアプローチが必要になる。
smooth-Chamfer similarity
$ s_{\text{SC}}(\bm{S}_1,\bm{S}_2)=\frac{1}{2\alpha|\bm{S}_1|}\sum_{x\in\bm{S}_1}\log\left(\sum_{y\in\bm{S}_2}e^{\alpha c(x,y)}\right)+\frac{1}{2\alpha|\bm{S}_2|}\sum_{y\in\bm{S}_2}\log\left(\sum_{x\in\bm{S}_1}e^{\alpha c(x,y)}\right)
||:集合の濃度、alphaはスケーリングのパラメータである。
以下の形でも書ける。
$ s_{\text{SC}}(\bm{S}_1,\bm{S}_2)=\frac{1}{2\alpha|\bm{S}_1|}\sum_{x\in\bm{S}_1}{\text{LSE}}_{y\in\bm{S}_2}\left(e^{\alpha c(x,y)}\right)+\frac{1}{2\alpha|\bm{S}_2|}\sum_{y\in\bm{S}_2}{\text{LSE}}_{x\in\bm{S}_1}\left(e^{\alpha c(x,y)}\right)
LSE: Log-Sum-Exp、なめらかな最大値を持つ関数として知られる。
https://scrapbox.io/files/650960a03c5bed001b892c56.png
https://scrapbox.io/files/65096092f5853f001bd55380.png
COCO、Flickr30K で実験
Recall@kが主要尺度として評価
pytorchで類似度を計算しようとすると、集合の濃度、denominator、温度が必要
Q. denominatorは何?
Q. 本当に集合の濃度?データセットサイズではない?
COCO見る感じ不安、一回動作確認したほうが良さげかも
multirankitに合うように特徴量変化させなければならないのでは?